Program-specific information (PSI) is metadata about a program (channel) and part of a MPEG transport stream.
The PSI data contains five tables:
PSI is carried in the form of a table structure. The table structure can span multiple transport stream packets. Adaptation field also occurs in TS packets carrying PSI data. The PSI data will never be scrambled so that the decoder at the receiving end can easily identify the properties of the stream.
The PAT, CAT and TDT tables are associated with predefined PID as explained in the respective sections. There may be multiple independent PMT tables in a stream; these are given user-defined PID numbers (as are PES packets). PMT table PIDs are defined in the PAT, and are the only PIDs defined there (PES PIDs are defined in the PMT). Each table has predefined structure.
Contents |
When exists | Name | Number of bits |
Description |
---|---|---|---|
If TS payload unit start |
Pointer field | 8 | Present if payload_unit_start_indicator bit is set in the TS header bytes. Gives the number of bytes from the end of this field to the start of payload data. |
Table ID | 8 | 0x00 | |
Section syntax indicator | 1 | Always 1 for PAT | |
0 | 1 | Always 0 for PAT | |
Reserved | 2 | Always set to binary '11' | |
Section length | 2+10 | Informs how many programs are listed below by specifying the number of bytes of this section, starting immediately following this field and including the CRC. First two bits must be zero. | |
transport stream ID | 16 | User defined data. Value not important to demuxers or players. | |
Reserved | 2 | Always set to binary '11' | |
Version number | 5 | Table version number. Incremented by 1 when data in table changes. Wraps around from 31 to 0. | |
Current/next indicator | 1 | If 0, table data isn't applicable yet (becomes applicable when set to 1) | |
Section number | 8 | Index of this section in the sequence of all PAT table sections. First section is numbered 0 | |
Last section number | 8 | Index of last section of PAT table | |
Repeated N times depending on section length |
Program num | 16 | |
Reserved | 3 | Always set to binary '111' | |
Program PID | 13 | packets with this PID are assumed to be PMT tables (see below) | |
CRC32 | 32 |
The PAT is assigned PID 0x0000 and table id of 0x00. The transport stream contains at least one or more TS packets with PID 0x0000. Some of these consecutive packets form the PAT. At the decoder side the PSI section filter listens to the incoming TS packets. After the filter identifies the PAT table they assemble the packet and decode it. A PAT has information about all the programs contained in the TS. The PAT contains information showing the association of Program Map Table PID and Program Number. The PAT should end with a 32-bit CRC
This table is used for conditional access to the streams. This table provides association with EMM stream. When the TS is scrambled then this section contains the EMM PID. The PID value is 0x0001.
When exists | Name | Number of bits |
Description | |
---|---|---|---|---|
If TS payload unit start |
Pointer field | 8 | Generally 0X00 for PMT | |
Table ID | 8 | Always 0x02 for PMT | ||
Section syntax indicator | 1 | |||
Always set to 0 | 1 | |||
Reserved | 2 | Always set to binary '11' | ||
Section length | 2+10 | Number of programs listed below. First two bits always zero. | ||
Program num | 16 | |||
Reserved | 2 | |||
Version number | 5 | Incremented by 1 mod 32 each time the table data changes | ||
Current Next indicator | 1 | If 1, this table is currently valid. If 0, this table will become valid next. | ||
Section number | 8 | Always 0x00 | ||
Last section number | 8 | Always 0x00 | ||
Reserved | 3 | |||
PCR PID | 13 | PID of general timecode stream, or 0x1FFF | ||
Reserved | 4 | |||
Program info length | 2+10 | Sum size of following program descriptors. First two bits must be zero. | ||
Program descriptor | N*8 | |||
Repeated N times depending on section length |
stream type | 8 | ||
Reserved | 3 | Always set to binary '111' | ||
Elementary PID | 13 | |||
Reserved | 4 | |||
ES Info length | 2+10 | First two bits must be zero. Entire value may be zero | ||
ES Descriptor | N*8 | If ES Info length is zero, this is omitted. | ||
CRC32 | 32 |
This table contains PID numbers of elementary streams associated with the program and it has information about the type of these elementary streams (video, audio, etc.). In addition it also contains the ECM PID number of the entitlement control message, which is associated with the program.
This table provides information about the multiplexes and transport streams on a given network.
Information about the current network uses table_id of 0x40, that about other networks uses table_id of 0x41.
It is segmented into network information sections and is carried on PID 0x0010. [ref EN300468]
Also this table contains the private stream information too. For example, TeleText, Subtitle and MHEG
The TDT provides the UTC (Universal Time) coded as MJD (modified Julian date). The TOT provides information regarding the local time offset from the UTC time. This is used to define the local time. The PID value for both tables is 0x0014.
For TDT – Table ID is 0x70. For TOT – Table ID is 0x73.